package cn.whale.assistant;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.TokenStream;
import dev.langchain4j.service.UserMessage;
import reactor.core.publisher.Flux;

public interface OllamaAssistant {



    /**
     * 流式输出 - 记忆能力 - search 工具调用
     * @param message ：消息
     * @param memoryId ：消息记忆用作隔离的ID
     */
    @SystemMessage("你是一名AI购物助手，根据用户的提问帮助用户搜索相关的商品信息")
    Flux<String> search(@UserMessage String message, @MemoryId String memoryId);


    /**
     * 流式输出 - 记忆能力 - tools 工具调用
     * @param message ：消息
     * @param memoryId ：消息记忆用作隔离的ID
     */
    @SystemMessage("你是一名天气查询助手，仔细分析用户的提问内容，根据内容中的城市名，调用tools搜索天气")
    Flux<String> weather(@UserMessage String message, @MemoryId String memoryId);


    /**
     * 流式输出 - 记忆能力
     * @param message ：消息
     * @param memoryId ：消息记忆用作隔离的ID
     */
    @SystemMessage("你是一名AI情感助手")
    Flux<String> chatStream(@UserMessage String message, @MemoryId String memoryId);

    /**
     * 流式输出 - 记忆能力
     * @param message ：消息
     * @param memoryId ：消息记忆用作隔离的ID
     */
    @SystemMessage("你是一名AI情感助手")
    TokenStream chatTokenStream(@UserMessage String message, @MemoryId String memoryId);

}
